@Embedding-based Product Retrieval in Taobao Search
淘宝搜索的向量召回特征包括语义特征与个性化特征。
语义特征基于query和item title,#card
不同的是query侧使用多粒度的文本encoder,
同时增加当前query的补充term(历史query,这里可能是历史统计得到的相似query),
而item侧语义特征则仍然使用title terms。
个性化特征#card
user/query侧使用实时、短期、长期的用户行为(点击过的商品、店铺等),
item侧则直接通过itemId获得商品embedding与语义特征拼接融合。

模型同样是双塔结构,
User tower的向量表示 #card
user/query侧一方面使用query多粒度term进行embedding映射,包括 1-gram,2-gram,query terms(q_seg)以及补充的query terms(q_his)。
此外,q_his的输入先经过和qseg的attention得到 $q_{\text {his_seq }}$ ,q_seg同样也会通过Transformer得到深度的语义特征 $q_{s e q _s e q}$ 。
最后各粒度特征通过加和,concat得到不同粒度的query表示向量矩阵 $Q_{m g s}$ ,而后 $Q_{m g s}$ 分别和实时,短期,长期的用户行为的特征表示做multi-head attention,最后得到。
商品的表示比较简单,#card
- 使用itemId embedding和title terms embedding拼接得到。
不同于使用hinge loss或者tripe loss,本文使用sampled softmax cross-entropy loss来进行模型训练,#card
期望得到全局的正负样本距离度量,以尽可能的实现训练和预测分布的一致性(pair wise loss则更关注局部的正负样本距离度量)。
$$
\begin{gathered}
\hat{y}{\left(i^{+} \mid q_u\right)}=\frac{\exp \left(\mathcal{F}\left(q_u, i^{+}\right)\right)}{\sum{i^{\prime} \in I} \exp \left(\mathcal{F}\left(q_u, i^{\prime}\right)\right)}, \
L(\nabla)=-\sum_{i \in I} y_i \log \left(\hat{y}_i\right),
\end{gathered}
$$
样本构造
- 训练数据使用点击日志,点击数据为正样本,由于使用了sampled softmax,负样本相当于 :-> 从商品池中随机采样。
- 难样本挖掘:人为对负样本加权#card
对随机负样本query-item pair对进行模型预测(中间模型),取Top-N的内积score的item向量表示集合 I
正样本 i+,线性相加得到难负样本表示 Imix
alpha 平衡样本的难度
由于引入了个性化特征、记忆性的Id特征,模型不可避免地引入相关性badcase(其实不加个性化特征也免不了)。因此策略上线时还做了一些额外的相关性控制策略#card
- 通过核心term(如品牌、颜色、型号等属性)匹配限制,避免模糊匹配带来的语义漂移等问题

@Embedding-based Product Retrieval in Taobao Search
https://blog.xiang578.com/post/logseq/@Embedding-based Product Retrieval in Taobao Search.html